/**
 * 获取系统路由映射
 * @returns 系统路由映射对象
 */
export function getSysRouteMap() {
  // 这里可以根据实际需求定义系统路由映射
  // 示例：将路由名称映射到路由配置
  return {
    // 可以在这里定义系统默认路由
    dashboard: {
      path: '/dashboard',
      name: 'dashboard',
      component: () => import('@/pages/Dashboard/index.vue'),
      meta: { title: '仪表盘' }
    },
    chat: {
      path: '/chat',
      name: 'chat', 
      component: () => import('@/pages/Chat/index.vue'),
      meta: { title: '聊天' }
    }
    // 可以根据需要添加更多系统路由
  };
}

/**
 * 合并服务端菜单数据和系统路由
 * @param serverMenus 服务端返回的菜单数据
 * @param sysRouteMap 系统路由映射
 * @returns 合并后的路由配置
 */
export function mergeServerRoute(serverMenus: any[], sysRouteMap: Record<string, any>) {
  if (!serverMenus || !Array.isArray(serverMenus)) {
    console.warn('服务端菜单数据格式不正确');
    return [];
  }

  const mergedRoutes: any[] = [];

  // 递归处理菜单数据
  function processMenus(menus: any[], parentPath = '') {
    return menus.map(menu => {
      const route: any = {
        path: menu.path || `${parentPath}/${menu.name}`,
        name: menu.name || menu.id,
        meta: {
          title: menu.title || menu.label,
          icon: menu.icon,
          hidden: menu.hidden || false,
          keepAlive: menu.keepAlive || false,
          ...menu.meta
        }
      };

      // 如果有对应的系统路由，使用系统路由的组件
      if (sysRouteMap[menu.name]) {
        route.component = sysRouteMap[menu.name].component;
      }

      // 处理子菜单
      if (menu.children && menu.children.length > 0) {
        route.children = processMenus(menu.children, route.path);
      }

      return route;
    });
  }

  try {
    const processedRoutes = processMenus(serverMenus);
    mergedRoutes.push(...processedRoutes);
    
    console.log('路由合并成功', mergedRoutes);
    return mergedRoutes;
  } catch (error) {
    console.error('路由合并失败', error);
    return [];
  }
}